package com.geotmt.billingcenter.modules.cost.service;

import com.geotmt.billingcenter.common.vo.cost.CostHisVo;
import com.geotmt.billingcenter.common.vo.cost.CostVo;
import com.geotmt.billingcenter.common.vo.params.ParamsCost;
import com.geotmt.billingcenter.common.vo.params.ParamsForDel;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Description 成本组合 Service
 * @Author      yanghanwei
 * @Mail        yanghanwei@geotmt.com
 * @Date        2019/3/18 12:00
 * @Version     v1
 **/
public interface CostService {

    /**
     * add
     * @param consumeVoList
     * @throws Exception
     */
    void addList(List<CostVo> consumeVoList) throws Exception;

    /**
     * add/update(批量)
     * @param consumeVoList
     * @param request
     * @throws Exception
     */
    void addUpdateList(List<CostVo> consumeVoList, HttpServletRequest request) throws Exception;

    /**
     * 分析List
     * @param consumeVoList
     * @return
     */
    Map<String,Object> analyzeList(List<CostVo> consumeVoList);

    /**
     * update
     * @param consumeVo
     * @throws Exception
     */
    void update(CostVo consumeVo) throws Exception;

    /**
     * delete
     * @param obj
     * @throws Exception
     */
    void delete(ParamsForDel obj) throws Exception;

    /**
     * list curr
     * @param obj
     * @return
     */
    List<CostVo> list(ParamsCost obj);

    /**
     * add/update 的回显
     * @param obj
     * @return
     */
    List<CostVo> listAll(ParamsCost obj);

    /**
     * list his
     * @param obj
     * @return
     */
    List<CostHisVo> listHis(ParamsCost obj);

    /**
     * 得到当前生效的规则
     * @param dsId
     * @param outInterfaceId
     * @param date
     * @return
     */
    CostHisVo getCost(int dsId, int outInterfaceId, Date date);

}
